<?php
require_once '../ORM/ORMUsuarios.php';
//require_once 'logControlador.php';
require_once 'alertaControlador.php';

if(!empty ($_POST)) {
    switch($_POST['accion']) {
        case 'login':
            $usuario = filter_input(INPUT_POST, 'usuario', FILTER_SANITIZE_STRING);
            $password = filter_input(INPUT_POST, 'password', FILTER_SANITIZE_STRING);
            $user = login($usuario, $password);
            break;
        case 'agregarUsuario':
            $usuario = filter_input(INPUT_POST, 'usuario', FILTER_SANITIZE_STRING);
            $password = filter_input(INPUT_POST, 'password', FILTER_SANITIZE_STRING);
            $nombre = filter_input(INPUT_POST, 'nombre', FILTER_SANITIZE_STRING);
            $apellido = filter_input(INPUT_POST, 'apellido', FILTER_SANITIZE_STRING);
            $correo = filter_input(INPUT_POST, 'correo', FILTER_SANITIZE_EMAIL);
            $rol = filter_input(INPUT_POST, 'rol', FILTER_SANITIZE_NUMBER_INT);
            agregarUsuario($usuario, $password, $nombre, $apellido, $correo, $rol);
            break;
    }
}

function login($usuario, $password) {
    $user = ORMlogin($usuario, $password);
    
    if($user->getIdUsuario() > 0) {
        iniciarSesion($user);
        agregarLog("Inicio sesion id=".$user->getIdUsuario()." usuario=".$usuario);
    } else {
        ?>
<script type="text/javascript">
    $(document).ready(function() {
        $('#usuariotext').val('');
        $('#passwordtext').val('');
        $('#usuariotext').focus();
    })
</script>
<?php
    }
}

function iniciarSesion($usuario) {
    session_start();
    $_SESSION['SID'] = $usuario->getIdUsuario();
    ?>
<script type="text/javascript">
    $(document).ready(function() {
        $(location).attr('href', '../vistas/main.php');
    });
</script>
<?php

}

function agregarUsuario($usuario, $password, $nombre, $apellido, $correo, $rol) {
    
    $estado = true;
    
    if(count(explode(' ', $usuario)) > 1) {  //  Se comprueba que el nombre no tenga espacios
        $estado = false;
        alerta("#resultadoUsuario", "El Usuario no debe contener espacios");
    } else {        
        if(strlen($usuario) == 0) { //  Se comprueba que se haya escrito un nombre de usuario 
            $estado = false;
            alerta("#resultadoUsuario", "Debe escribir un nombre de Usuario");
        } else { 
            if(ORMExisteUsuario($usuario)) { // El usuario existe 
                $estado = false; 
                alerta("#resultadoUsuario", "El Usuario ya existe");
            } else {
                ok("#resultadoUsuario");
            }
        } 
    }
    
    if(count(explode(' ', $password)) > 1) {  //  Se comprueba que el password no tenga espacios
        $estado = false;
        alerta("#resultadoPassword", "El Password no debe contener espacios");
    } else {
        if(strlen($password) == 0) {  //  Se comprueba que se haya escrito un password
            $estado = false;
            alerta("#resultadoPassword", "Debe escribir un Password");
        } else {
            ok("#resultadoPassword");
        }
    }
    
    if(strlen($nombre) == 0) {
        $estado = false;
        alerta("#resultadoNombre", "Debe escribir un Nombre");
    } else {
        ok("#resultadoNombre");
    }
    
    if(strlen($apellido) == 0) {
        $estado = false;
        alerta("#resultadoApellido", "Debe escribir un Apellido");
    } else {
        ok("#resultadoApellido");
    }
    
    if(comprobar_email($correo)) {
        ok("#resultadoCorreo");
    } else {
        $estado = false;
        alerta("#resultadoCorreo", "Debe escribir un correo válido");
    }
    
    if($estado) {
        ORMAgregarUsuario($usuario, $password, $nombre, $apellido, $correo, $rol);
        if(ORMExisteUsuario($usuario)) {
            ?>
            <script type="text/javascript">
                $(document).ready(function() {
                    $("#usuario").val('');
                    $("#resultadoUsuario").html('');
                    $("#password").val('');
                    $("#resultadoPassword").html('');
                    $("#nombre").val('');
                    $("#resultadoNombre").html('');
                    $("#apellido").val('');
                    $("#resultadoApellido").html('');
                    $("#correo").val('');
                    $("#resultadoCorreo").html('');
                    $("$usuario").focus();
                });
            </script>
            <?php
        } else {
            error("#usuarioResultado", "Se produjo un error al crear un Usuario");
            error("#passwordResultado", "Se produjo un error al crear un Usuario");
            error("#nombreResultado", "Se produjo un error al crear un Usuario");
            error("#apellidoResultado", "Se produjo un error al crear un Usuario");
            error("#correoResultado", "Se produjo un error al crear un Usuario");
        }
    }
}



function comprobar_email($email){ 
   	$mail_correcto = 0; 
   	//compruebo unas cosas primeras 
   	if ((strlen($email) >= 6) && (substr_count($email,"@") == 1) && (substr($email,0,1) != "@") && (substr($email,strlen($email)-1,1) != "@")){ 
      	 if ((!strstr($email,"'")) && (!strstr($email,"\"")) && (!strstr($email,"\\")) && (!strstr($email,"\$")) && (!strstr($email," "))) { 
         	 //miro si tiene caracter . 
         	 if (substr_count($email,".")>= 1){ 
            	 //obtengo la terminacion del dominio 
            	 $term_dom = substr(strrchr ($email, '.'),1); 
            	 //compruebo que la terminación del dominio sea correcta 
            	 if (strlen($term_dom)>1 && strlen($term_dom)<5 && (!strstr($term_dom,"@")) ){ 
               	 //compruebo que lo de antes del dominio sea correcto 
               	 $antes_dom = substr($email,0,strlen($email) - strlen($term_dom) - 1); 
               	 $caracter_ult = substr($antes_dom,strlen($antes_dom)-1,1); 
               	 if ($caracter_ult != "@" && $caracter_ult != "."){ 
                  	 $mail_correcto = 1; 
               	 } 
            	 } 
         	 } 
      	 } 
   	} 
   	if ($mail_correcto) 
      	 return 1; 
   	else 
      	 return 0; 
} 

?>
